#ifndef SIMPLE_SUPPORT_TYPE_TRAITS_IS_META_CONSTANT_HPP
#define SIMPLE_SUPPORT_TYPE_TRAITS_IS_META_CONSTANT_HPP

#include <cstddef> // std::nullptr_t
#include <type_traits> // std::true_type std::false_type

namespace simple::support
{

	template <typename T, typename = std::nullptr_t>
	struct is_meta_constant : public std::false_type {};

	template <typename T>
	struct is_meta_constant<T, decltype
	(
		void(T{} == T::value),
		nullptr
	) > : public std::true_type {};

	template <typename T>
	constexpr bool is_meta_constant_v = is_meta_constant<T>::value;

} // namespace simple::support

#endif /* end of include guard */
